4.2. Руководство по инсталляции сервиса системных настроек Vault¶
4.2.1. Назначение и общий функционал работы с Vault¶
Сервис системных настроек Vault предназначен для безопасного управления конфиденциальной информацией в современных архитектурах приложений.
Vault используется Системой в качестве специального сервера по хранению секретных данных. Вместо того, чтобы хранить данные в конфигурации и/или в переменных окружения, Система запрашивает специальное хранилище (Vault) предоставить тот или иной параметр.
Более подробную информацию о сервисе системных настроек Vault можно посмотреть здесь: https://www.vaultproject.io/.
4.2.2. Установка и первичная настройка Vault¶
Подробная информация об установке Vault находится здесь: https://learn.hashicorp.com/vault/getting-started/install. Следуя шагам Руководства https://learn.hashicorp.com/vault/getting-started/install, можно получить полную информацию о настройке и работе с Vault.
4.2.2.1. Установка Vault¶
Перед установкой Vault необходимо установить Docker. Подробнее об установке и настройке Docker можно посмотреть здесь: https://docs.docker.com/get-started/.
Для установки Vault нужно скачать образ Vault из Docker, выполнив в командной строке команду:
docker pull vault
Затем следует запустить контейнер с Vault в режиме сервера, выполнив команду:
docker run --cap-add=IPC_LOCK -d --name=vault -p 8200:8200 -e
'VAULT_LOCAL_CONFIG={"backend": {"file": {"path": "/vault/file"}},
"default_lease_ttl": "168h", "max_lease_ttl": "720h",
"listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}},"ui":true}'
vault server
После выполнения этой команды Vault будет доступен на локальной машине по адресу http://localhost:8200.
4.2.2.2. Первичная настройка Vault¶
Для первичной настройки Vault нужно сначала открыть интерфейс Vault в браузере по ссылке http://localhost:8200.
При первом запуске Vault предложит создать ключи доступа к хранилищу (Рис. 4.2.1). Необходимо указать два значения:
- Key shares
- Общее количество создаваемых ключей.
- Key threshold
- Количество ключей, которое нужно ввести для разблокировки хранилища. То есть для разблокировки хранилища необходимо ввести «Key threshold» ключей из «Key shares» созданных ключей.
Затем необходимо нажать на кнопку «Initialize» (Рис. 4.2.1).
После нажатия на кнопку «Initialize» откроется форма с созданными ключами и токеном для входа (Рис. 4.2.2).
Можно посмотреть созданные ключи и токен, нажав на кнопку «Показать» (Рис. 4.2.2).
Ключи и токен необходимо сохранить. Для сохранения ключей и токена можно скачать файл с ключами, нажав на ссылку «Download keys» (Рис. 4.2.4).
После нажатия на ссылку «Download keys» откроется форма для сохранения файла, в которой необходимо выбрать пункт «Сохранить файл» и нажать на кнопку «Ок» (Рис. 4.2.5).
Пример файла:
{
"keys": [
"276145fff95fa8be222101f9e0394f97e1feaf3a5c46f08dab07cc335bc1c2c999",
"dba61c998d0e1f3c7d780c02c480e666ba7ca13a308cac59ef1b624b5e3a32ed48",
"b21363f9051de24336430d3dac1c06c792b12b82d550cda6489f2faaa641f7cdf0",
"570659b121e2ecf8ed4becc9170def4915e8a7c3c59bcebb6945ae3ca587e886a5",
"eba1bd6e8ca225d9839ac70f91c761bfda6d521b905f57605d3dc2362774339451",
"f145a3af32776ed08aa8c19ab1ed68871cb1016e5767f5d7d8f36db679cdf358bd"
],
"keys_base64": [
"J2FF//lfqL4iIQH54DlPl+H+rzpcRvCNqwfMM1vBwsmZ",
"26YcmY0OHzx9eAwCxIDmZrp8oTowjKxZ7xtiS146Mu1I",
"shNj+QUd4kM2Qw09rBwGx5KxK4LVUM2mSJ8vqqZB983w",
"VwZZsSHi7PjtS+zJFw3vSRXop8PFm867aUWuPKWH6Ial",
"66G9boyiJdmDmscPkcdhv9ptUhuQX1dgXT3CNid0M5RR",
"8UWjrzJ3btCKqMGase1ohxyxAW5XZ/XX2PNttnnN81i9"
],
"root_token": "s.RoEWWpedgmLegifVCjpvz8n9"
}
Здесь:
- «keys» - созданные ключи.
- «root_token» - созданный токен.
Для продолжения настройки необходимо нажать на кнопку «Continue to Unseal» (Рис. 4.2.5).
После этого появится форма «Unseal Vault» (Рис. 4.2.6), в поле «Master Key Portion» которой необходимо ввести то количество ключей, которое было указано в поле «Key threshold» на форме старта инициализации Vault (Рис. 4.2.1).
После каждого ввода ключа в поле «Master Key Portion» необходимо нажимать кнопку «Unseal» (Рис. 4.2.6).
После того как необходимое количество ключей введено, появится форма «Sign in to Vault», в поле «Token» которой необходимо ввести токен, а затем нажать на этой форме кнопку «Sign in» (Рис. 4.2.7).
После чего откроется cервис системных настроек Vault (Рис. 4.2.8).
4.2.3. Создание нового хранилища и наборов настроек¶
4.2.3.1. Создание нового хранилища¶
На вкладке «Secrets» необходимо создать новое хранилище. Для этого нужно нажать кнопку «Enable new engine» (Рис. 4.2.8).
После этого откроется форма «Enable a Secrets Engine» для выбора типа хранилища (Рис. 4.2.9).
Необходимо выбрать тип «KV» (key value) и нажать на кнопку «Next» (Рис. 4.2.9).
После этого откроется форма «Enable KV Secrets Engine» (Рис. 4.2.10), в которой необходимо заполнить следующие поля:
- Path
- Указывается название хранилища.
- Versions
- Указывается номер версии хранилища.
По кнопке «Metod Options» разворачивается форма с дополнительными параметрами (Рис. 4.2.11).
Можно оставить значения всех полей на форме «Metod Options» без изменений. Более подробно об опциях можно посмотреть здесь: https://www.vaultproject.io/.
Для завершения создания хранилища необходимо нажать на кнопку «Enable Engine» (Рис. 4.2.10). После этого откроется созданное хранилище (Рис. 4.2.12).
4.2.3.2. Создание набора настроек¶
Настройки создаются и хранятся внутри набора настроек (secrets). Это сделано для удобства объединения настроек по определенному принципу. Таким образом, сначала необходимо создать набор настроек.
Создание набора настроек выполняется по кнопке «Create secret» (Рис. 4.2.12). После нажатия на эту кнопку откроется форма «Create secret» (Рис. 4.2.13).
В этой форме необходимо заполнить следующие поля:
- Parh for this secret
- Указывается название набора настроек.
- Maximum Number of Versions
- Указывается количество сохраняемых версий набора настроек, до каждой из которых можно будет «откатиться» при необходимости.
- Version data
Здесь по кнопке «Add» добавляются настройки. У каждой новой настройки необходимо заполнить поля (Рис. 4.2.14):
- key
- Название настройки.
- value
- Значение настройки.
После того как все настройки добавлены, для сохранения текущей версии набора настроек необходимо нажать кнопку «Save» (Рис. 4.2.14). После этого текущая версия набора настроек будет сохранена (Рис. 4.2.15).
Созданные настройки можно посмотреть в виде строки JSON. Для этого необходимо включить переключатель «JSON» (Рис. 4.2.15). После этого созданные настройки отобразятся в виде строки JSON (Рис. 4.2.16).
Для возврата внешнего вида настроек в виде набора полей необходимо выключить переключатель «JSON» (Рис. 4.2.16).
Примечание
Сохраненные версии набора настроек изменить нельзя. Для внесения изменений в набор настроек необходимо создать новую версию данного набора.
Аналогичным образом создается необходимое количество наборов настроек.
4.2.3.3. Создание новой версии набора настроек¶
Создание новых настроек, изменение или удаление существующих настроек выполняется в новой версии набора настроек.
Создание новой версии набора настроек выполняется по кнопке «Create new version» (Рис. 4.2.17).
После нажатия на эту кнопку будет создана и сразу же откроется на просмотр и изменение новая версия набора настроек (Рис. 4.2.18).
В эту версию нужно внести необходимые изменения. Например, по кнопке «Add» можно добавить еще одну настройку. Для сохранения изменений следует нажать на кнопку «Save» (Рис. 4.2.19).
В результате в новую версию набора настроек будет добавлена еще одна настройка (Рис. 4.2.20).
Отображение настроек в виде строки JSON также покажет новую настройку (Рис. 4.2.21).
Изменения в новых версиях набора настроек можно выполнять и в режиме строки JSON (Рис. 4.2.22).
После сохранения текущей версии набора настроек все изменения, выполненные в режиме строки JSON, появятся в последней сохраненной версии набора настроек (Рис. 4.2.23, Рис. 4.2.24).